#include "test_documentos.h"
#include "files.h"



int test_tda_documentos_crear_mock_documento_1(ITEM_TDA_DOCUMENTOS *documento)
{
	tda_docuemntos_crear_documento(documento);

	documento->idDocumento = 1;
	strcpy(documento->titulo,"Prueba.txt");

	tda_docuemntos_agregar_lexico(documento,"Hola");
	tda_docuemntos_agregar_lexico(documento,"Mundo");
	tda_docuemntos_agregar_lexico(documento,"C");

	documento->cantidadConsultas = 0;
}

int test_tda_documentos_crear_mock_documento_2(ITEM_TDA_DOCUMENTOS *documento)
{
	tda_docuemntos_crear_documento(documento);
	documento->idDocumento = 2;
	strcpy(documento->titulo,"Prueba2.txt");

	tda_docuemntos_agregar_lexico(documento,"Este");
	tda_docuemntos_agregar_lexico(documento,"es");
	tda_docuemntos_agregar_lexico(documento,"el");
	tda_docuemntos_agregar_lexico(documento,"segundo");

	documento->cantidadConsultas = 0;
}

int test_tda_documentos_crear_mock_documento_3(ITEM_TDA_DOCUMENTOS *documento)
{
	tda_docuemntos_crear_documento(documento);
	documento->idDocumento = 3;
	strcpy(documento->titulo,"Prueba3.txt");

	tda_docuemntos_agregar_lexico(documento,"This");
	tda_docuemntos_agregar_lexico(documento,"is");
	tda_docuemntos_agregar_lexico(documento,"the");
	tda_docuemntos_agregar_lexico(documento,"third");
	tda_docuemntos_agregar_lexico(documento,"one");


	documento->cantidadConsultas = 0;
}

int test_tda_documentos_crear_mock_documento_3_b(ITEM_TDA_DOCUMENTOS *documento)
{
	tda_docuemntos_crear_documento(documento);
	documento->idDocumento = 3;
	strcpy(documento->titulo,"Prueba3 Modificado.txt");

	tda_docuemntos_agregar_lexico(documento,"This");
	tda_docuemntos_agregar_lexico(documento,"is");
	tda_docuemntos_agregar_lexico(documento,"the");
	tda_docuemntos_agregar_lexico(documento,"third");
	tda_docuemntos_agregar_lexico(documento,"one");

	documento->cantidadConsultas = 0;
}

int test_tda_documento_crear_mock_tda_documentos_1(TDA_DOCUMENTOS *tdaDocumentos)
{
	ITEM_TDA_DOCUMENTOS *documento;

	tda_docuemntos_crear(tdaDocumentos);

	//Documento 1
	documento = malloc(sizeof(ITEM_TDA_DOCUMENTOS));
	test_tda_documentos_crear_mock_documento_1(documento);
	tda_docuemntos_alta(tdaDocumentos,documento);
	free(documento);
	//End Documento 1

	//Documento 2
	documento = malloc(sizeof(ITEM_TDA_DOCUMENTOS));
	test_tda_documentos_crear_mock_documento_2(documento);
	tda_docuemntos_alta(tdaDocumentos,documento);
	free(documento);
	//End Documento 2

	//Documento 3
	documento = malloc(sizeof(ITEM_TDA_DOCUMENTOS));
	test_tda_documentos_crear_mock_documento_3(documento);
	tda_docuemntos_alta(tdaDocumentos,documento);
	free(documento);
	//End Documento 3
}
int test_tda_documento_crear_mock_tda_documentos_2(TDA_DOCUMENTOS *tdaDocumentos)
{
	ITEM_TDA_DOCUMENTOS *documento;

	tda_docuemntos_crear(tdaDocumentos);

	//Documento 1
	documento = malloc(sizeof(ITEM_TDA_DOCUMENTOS));
	test_tda_documentos_crear_mock_documento_1(documento);
	tda_docuemntos_alta(tdaDocumentos,documento);
	free(documento);
	//End Documento 1

	//Documento 2
	documento = malloc(sizeof(ITEM_TDA_DOCUMENTOS));
	test_tda_documentos_crear_mock_documento_2(documento);
	tda_docuemntos_alta(tdaDocumentos,documento);
	free(documento);
	//End Documento 2

	//Documento 3
	documento = malloc(sizeof(ITEM_TDA_DOCUMENTOS));
	test_tda_documentos_crear_mock_documento_3_b(documento);
	tda_docuemntos_alta(tdaDocumentos,documento);
	free(documento);
	//End Documento 3
}

int test_tda_documentos_creacion_y_impresion()
{
	TDA_DOCUMENTOS *tdaDocumentos = malloc(sizeof(TDA_DOCUMENTOS));
	test_tda_documento_crear_mock_tda_documentos_1(tdaDocumentos);
	tda_docuemntos_printf(tdaDocumentos);
	tda_docuemntos_destruir(tdaDocumentos);
	free(tdaDocumentos);
}

int test_tda_documentos_creacion_y_impresion_b()
{
	TDA_DOCUMENTOS *tdaDocumentos = malloc(sizeof(TDA_DOCUMENTOS));
	test_tda_documento_crear_mock_tda_documentos_2(tdaDocumentos);
	tda_docuemntos_printf(tdaDocumentos);
	tda_docuemntos_destruir(tdaDocumentos);
	free(tdaDocumentos);
}


int test_tda_documentos_guardar_en_disco()
{
	TDA_DOCUMENTOS *tdaDocumentos = malloc(sizeof(TDA_DOCUMENTOS));
	FILE *fp;
	test_tda_documento_crear_mock_tda_documentos_1(tdaDocumentos);

	files_open_write_mode(fp,DOCUMENTOS_FILE,DOCUMENTOS_TMP_FILE);
	tda_documentos_write_file(tdaDocumentos,fp);
	files_close_write_mode(fp,DOCUMENTOS_TMP_FILE);

	tda_docuemntos_destruir(tdaDocumentos);
	free(tdaDocumentos);
}


int test_tda_documentos_leer_de_disco_y_imprimir()
{
	TDA_DOCUMENTOS *tdaDocumentos = malloc(sizeof(TDA_DOCUMENTOS));
	FILE *fp;
	tda_docuemntos_crear(tdaDocumentos);

	files_open_read_mode(fp,DOCUMENTOS_FILE);
	tda_documentos_read_file(tdaDocumentos,fp);
	files_close_read_mode(fp);

	tda_docuemntos_printf(tdaDocumentos);
	tda_docuemntos_destruir(tdaDocumentos);
	free(tdaDocumentos);
}

int test_tda_documentos_borrar_documento_en_disco()
{
	TDA_DOCUMENTOS *tdaDocumentos = malloc(sizeof(TDA_DOCUMENTOS));
	FILE *fp;
	tda_docuemntos_crear(tdaDocumentos);

	files_open_read_mode(fp,DOCUMENTOS_FILE);
	tda_documentos_read_file(tdaDocumentos,fp);
	files_close_read_mode(fp);

	ITEM_TDA_DOCUMENTOS documento;
	documento.idDocumento = 4;
	tda_docuemntos_baja(tdaDocumentos,&documento);

	files_open_write_mode(fp,DOCUMENTOS_FILE,DOCUMENTOS_TMP_FILE);
	tda_documentos_write_file(tdaDocumentos,fp);
	files_close_write_mode(fp,DOCUMENTOS_TMP_FILE);

	tda_docuemntos_destruir(tdaDocumentos);
	free(tdaDocumentos);
}

int test_tda_documentos_leer_de_disco_modificar_e_imprimir_en_pantalla()
{
	TDA_DOCUMENTOS *tdaDocumentos = malloc(sizeof(TDA_DOCUMENTOS));
	FILE *fp;
	tda_docuemntos_crear(tdaDocumentos);

	files_open_read_mode(fp,DOCUMENTOS_FILE);
	tda_documentos_read_file(tdaDocumentos,fp);
	files_close_read_mode(fp);

	ITEM_TDA_DOCUMENTOS documento;
	test_tda_documentos_crear_mock_documento_1(&documento);
	strcpy(documento.titulo,"Nombre Modificado.txt");


	tda_docuemntos_modificacion(tdaDocumentos,&documento);

	tda_docuemntos_printf(tdaDocumentos);

	tda_docuemntos_destruir(tdaDocumentos);
	free(tdaDocumentos);
}

int test_tda_documentos_solamente_leer_y_guardar_en_disco()
{
	TDA_DOCUMENTOS *tdaDocumentos = malloc(sizeof(TDA_DOCUMENTOS));
	FILE *fp;
	tda_docuemntos_crear(tdaDocumentos);

	files_open_read_mode(fp,DOCUMENTOS_FILE);
	tda_documentos_read_file(tdaDocumentos,fp);
	files_close_read_mode(fp);


	files_open_write_mode(fp,DOCUMENTOS_FILE,DOCUMENTOS_TMP_FILE);
	tda_documentos_write_file(tdaDocumentos,fp);
	files_close_write_mode(fp,DOCUMENTOS_TMP_FILE);


	tda_docuemntos_destruir(tdaDocumentos);
	free(tdaDocumentos);
}

int test_tda_documentos_modificar_documento_en_disco()
{
	TDA_DOCUMENTOS *tdaDocumentos = malloc(sizeof(TDA_DOCUMENTOS));
	FILE *fp;
	tda_docuemntos_crear(tdaDocumentos);

	files_open_read_mode(fp,DOCUMENTOS_FILE);
	tda_documentos_read_file(tdaDocumentos,fp);
	files_close_read_mode(fp);


	ITEM_TDA_DOCUMENTOS documento;
	test_tda_documentos_crear_mock_documento_1(&documento);
	strcpy(documento.titulo,"Nombre Modificado.txt");
	tda_docuemntos_modificacion(tdaDocumentos,&documento);

	files_open_write_mode(fp,DOCUMENTOS_FILE,DOCUMENTOS_TMP_FILE);
	tda_documentos_write_file(tdaDocumentos,fp);
	files_close_write_mode(fp,DOCUMENTOS_TMP_FILE);


	tda_docuemntos_destruir(tdaDocumentos);
	free(tdaDocumentos);
}

int test_tda_documentos_consultar_y_modificar_documento_en_disco()
{
	TDA_DOCUMENTOS *tdaDocumentos = malloc(sizeof(TDA_DOCUMENTOS));
	FILE *fp;
	tda_docuemntos_crear(tdaDocumentos);

	files_open_read_mode(fp,DOCUMENTOS_FILE);
	tda_documentos_read_file(tdaDocumentos,fp);
	files_close_read_mode(fp);


	ITEM_TDA_DOCUMENTOS documento;
	documento.idDocumento = 3;
	tda_docuemntos_consulta(tdaDocumentos,&documento);
	strcpy(documento.titulo,"Prueba3 Modificado.txt");
	tda_docuemntos_modificacion(tdaDocumentos,&documento);
	//tda_docuemntos_printf(tdaDocumentos);


	files_open_write_mode(fp,DOCUMENTOS_FILE,DOCUMENTOS_TMP_FILE);
	tda_documentos_write_file(tdaDocumentos,fp);
	files_close_write_mode(fp,DOCUMENTOS_TMP_FILE);


	tda_docuemntos_destruir(tdaDocumentos);
	free(tdaDocumentos);
}
int test_tda_documentos_consultar_y_modificar_documento_en_disco_agregar_lexicos()
{
	TDA_DOCUMENTOS *tdaDocumentos = malloc(sizeof(TDA_DOCUMENTOS));
	FILE *fp;
	tda_docuemntos_crear(tdaDocumentos);

	files_open_read_mode(fp,DOCUMENTOS_FILE);
	tda_documentos_read_file(tdaDocumentos,fp);
	files_close_read_mode(fp);

	ITEM_TDA_DOCUMENTOS documento;
	documento.idDocumento = 3;
	tda_docuemntos_consulta(tdaDocumentos,&documento);
	tda_docuemntos_agregar_lexico(&documento,"lexico_nuevo");
	tda_docuemntos_modificacion(tdaDocumentos,&documento);
	//tda_docuemntos_printf(tdaDocumentos);

	files_open_write_mode(fp,DOCUMENTOS_FILE,DOCUMENTOS_TMP_FILE);
	tda_documentos_write_file(tdaDocumentos,fp);
	files_close_write_mode(fp,DOCUMENTOS_TMP_FILE);

	tda_docuemntos_destruir(tdaDocumentos);
	free(tdaDocumentos);
}

int test_tda_documentos_consultar_y_modificar_documento_en_disco_eliminar_lexicos()
{
	TDA_DOCUMENTOS *tdaDocumentos = malloc(sizeof(TDA_DOCUMENTOS));
	FILE *fp;
	tda_docuemntos_crear(tdaDocumentos);


	files_open_read_mode(fp,DOCUMENTOS_FILE);
	tda_documentos_read_file(tdaDocumentos,fp);
	files_close_read_mode(fp);


	ITEM_TDA_DOCUMENTOS documento;
	documento.idDocumento = 3;
	tda_docuemntos_consulta(tdaDocumentos,&documento);
	tda_docuemntos_eliminar_lexico(&documento,"third");
	tda_docuemntos_modificacion(tdaDocumentos,&documento);
	//tda_docuemntos_printf(tdaDocumentos);

	files_open_write_mode(fp,DOCUMENTOS_FILE,DOCUMENTOS_TMP_FILE);
	tda_documentos_write_file(tdaDocumentos,fp);
	files_close_write_mode(fp,DOCUMENTOS_TMP_FILE);

	tda_docuemntos_destruir(tdaDocumentos);
	free(tdaDocumentos);
}

int test_tda_documentos_alta_desde_disco()
{
	TDA_DOCUMENTOS *tdaDocumentos = malloc(sizeof(TDA_DOCUMENTOS));
	FILE *fp;
	tda_docuemntos_crear(tdaDocumentos);


	files_open_read_mode(fp,DOCUMENTOS_FILE);
	tda_documentos_read_file(tdaDocumentos,fp);
	files_close_read_mode(fp);


	tda_docuemntos_alta_desde_disco(tdaDocumentos,88,"doc1.txt");

	files_open_write_mode(fp,DOCUMENTOS_FILE,DOCUMENTOS_TMP_FILE);
	tda_documentos_write_file(tdaDocumentos,fp);
	files_close_write_mode(fp,DOCUMENTOS_TMP_FILE);

	tda_docuemntos_destruir(tdaDocumentos);
	free(tdaDocumentos);
}

int test_tda_lexicos()
{
	FILE *fp;
	TDA_LEXICOS tdaLexico;
	tda_lexico_crear(&tdaLexico);
	ITEM_LEXICO item;
	item.cantidadConsultasLexico = 114;
	strcpy(item.lexico,"hello");
	tda_lexico_alta(&tdaLexico,&item);

	files_open_read_mode(fp,LEXICOS_FILE);
	tda_lexico_read_file(&tdaLexico,fp);
	files_close_read_mode(fp);

	//tda_lexico_alta(&tdaLexico,"nuevo__23",818);
	//tda_lexico_baja(&tdaLexico,"nuevo__23");
	//tda_lexico_baja(&tdaLexico,"nuevo__23");
	//tda_lexico_baja(&tdaLexico,"nuevo__23");
	//tda_lexico_baja(&tdaLexico,"nuevo__23");
	//tda_lexico_baja(&tdaLexico,"nuevo__23");
	//tda_lexico_baja(&tdaLexico,"nuevo__23");
	tda_lexico_printf(&tdaLexico);


	files_open_write_mode(fp,LEXICOS_FILE,LEXICOS_TMP_FILE);
	tda_lexico_write_file(&tdaLexico,fp);
	files_close_write_mode(fp,LEXICOS_TMP_FILE);
}




